import logging
from pathlib import Path

# 支持的文件类型及其扩展名映射
# 分类标准基于常见用途和文件格式特征
FILE_EXTENSIONS = {
    "VIDEO": [
        # 主流视频格式
        '.mp4', '.avi', '.mov', '.mkv', '.webm', '.flv', '.wmv',
        # 专业/编辑格式
        '.mpg', '.mpeg', '.m4v', '.vob', '.ts', '.m2ts', '.prores', '.mxf',
        # 移动设备和旧格式
        '.3gp', '.3g2', '.rm', '.rmvb', '.ogv', '.asf',
        # 动画和屏幕录制
        '.gifv', '.screen', '.rec'
    ],
    "IMAGE": [
        # 基础图片格式
        '.jpg', '.jpeg', '.png', '.gif', '.bmp', '.webp', '.tiff', '.tif',
        # 矢量图形
        '.svg', '.eps',
        # 专业/特殊用途
        '.ico', '.heic', '.heif', '.raw', '.cr2', '.nef', '.arw', '.psd', '.psb',
        # 其他小众格式
        '.xcf', '.dds', '.hdr'
    ],
    "DOCUMENT": [
        # 办公文档
        ".pdf", ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".odt", ".ods", ".odp", ".rtf",
        # 文本与标记语言
        ".txt", ".md", ".markdown", ".tex", ".html", ".htm",
        # 配置文件与日志
        ".ini", ".cfg", ".conf", ".log", ".csv",
        # 其他专业文档
        ".xml", ".json", ".yaml", ".yml", ".ics", ".vcf", ".bib"
    ],
    "AUDIO": [
        # 主流有损格式
        '.mp3', '.aac', '.ogg', '.m4a', '.wma', '.ac3', '.dts',
        # 无损压缩格式
        '.flac', '.alac', '.ape', '.wv', '.tta', '.mka',
        # 专业/原始格式
        '.wav', '.aiff', '.au', '.mid', '.midi', '.kar', '.oga', '.opus', '.ra', '.ram'
    ],
    "ARCHIVE": [
        # 主流压缩格式
        '.zip', '.rar', '.7z', '.tar', '.gz', '.bz2', '.xz', '.lz4',
        # 系统专用格式
        '.cab', '.msi', '.rpm', '.deb', '.pkg', '.dmg',
        # 旧版/小众格式
        '.lzh', '.arj', '.z', '.sit', '.sea',
        # 应用程序封装格式
        '.jar', '.war', '.ear', '.zipx', '.appx', '.xpi', '.crx', '.pak', '.bundle'
    ],
    "CODE": [
        # 主流编程语言
        '.py', '.java', '.c', '.cpp', '.h', '.hpp', '.cs', '.js', '.jsx',
        '.ts', '.tsx', '.go', '.rs', '.swift', '.kt', '.kts', '.rb',
        '.php', '.pl', '.pm', '.perl', '.sh', '.bash', '.zsh',
        '.lua', '.dart', '.groovy', '.scala', '.vb', '.vbs',
        # 前端/标记语言
        '.html', '.htm', '.css', '.scss', '.sass', '.less', '.json', '.xml',
        '.yaml', '.yml', '.toml', '.md', '.markdown', '.svg', '.vue', '.svelte', '.astro', '.njk', '.pug', '.handlebars',
        # 数据库与配置
        '.sql', '.db', '.db3', '.sqlite', '.sqlite3', '.ini', '.cfg', '.conf', '.properties', '.env', '.gitignore',
        # 编译与构建
        '.make', '.cmake', '.mvn', '.gradle', '.bat', '.cmd', '.ps1', '.Dockerfile', '.dockerignore', '.dockercompose',
        # 其他编程相关
        '.ipynb', '.notebook', '.prolog', '.lisp', '.clj', '.r', '.m', '.asm', '.s', '.v', '.sv', '.vh', '.xdc', '.tcl'
    ],
    "EBOOK": [
        # 主流电子书格式
        '.epub', '.mobi', '.azw3', '.pdf', '.txt', '.html', '.htm',
        # Kindle 专用格式
        '.azw', '.azw1', '.azw4', '.prc', '.kfx',
        # 漫画/图文格式
        '.cbz', '.cbr', '.cbt', '.mobi8', '.pdb', '.pml',
        # 专业/特殊格式
        '.fb2', '.fb2.zip', '.lit', '.lrx', '.lrf', '.odt', '.docx', '.djvu'
    ],
}

# 文件排序优先级（从上到下）
SORT_PRIORITY = [
    "DIRECTORY", "VIDEO", "IMAGE", "DOCUMENT",
    "AUDIO", "ARCHIVE", "CODE", "EBOOK", "OTHER"
]

# 默认重命名设置
DEFAULT_SETTINGS = {
    "prefix": "",             # 文件名前缀
    "start_index": 1,         # 起始序号
    "zero_padding": True,     # 是否补零
    "keep_original": False    # 是否保留原文件
}

# 日志配置
LOG_CONFIG = {
    "filename": str(Path.home() / "file_renamer.log"),  # 日志文件路径（用户主目录）
    "level": logging.INFO,                                # 日志级别
    "format": "%(asctime)s - %(levelname)s - %(message)s"  # 日志格式
}